package org.example;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Properties;

/*
    ATM系统专用工具类
 */
public class ATMUtil {

    //验证密码是否为数字
    public static boolean checkPwd(String password) {
        char[] cArrays = password.toCharArray();
        for (char c : cArrays) {
            if (c < '0' || c > '9') {
                return false;
            }
        }
        return true;
    }

    //查看用户是否存在
    public static User checkUserExsit(User[] allUsers, String target) {
        for (User user : allUsers) {
            if (user.getUsername().equals(target)) {
                return user;
            }
        }
        return null;
    }

    /**
     * 储存用户的数据
     * 读取传入的用户（修改后）的数据，并将其放入properties文件中进行储存
     *
     * @param user       当前操作的用户
     * @param properties properties对象
     */
    public static void storeTheUser(User user, Properties properties) {
        properties.setProperty(user.getUsername(), user.getPassword() + "-" + user.getAccount().toString());
        try {
            properties.store(new FileOutputStream("/Users/cengyunke/Desktop/atm1/atm/src/main/resources/User.properties"), "Users");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 修改用户的数据（修改密码）
     * 当前用户对象的密码如果发生修改，则删除以当前用户key值的properties属性
     * 并且将新的属性封装好再重新存入properties文件中
     *
     * @param user        当前操作对象
     * @param newPassword 新密码
     * @param properties  properties对象
     */
    public static void ChangeUser(User user, String newPassword, Properties properties) {
        properties.remove(user.getUsername());//删除以前的数据
        properties.setProperty(user.getUsername(), newPassword + "-" + user.getAccount().toString());//加入新的数据
        try {
            properties.store(new FileOutputStream("/Users/cengyunke/Desktop/atm1/atm/src/main/resources/User.properties"), "Users2");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 对当前操作的用户Map集合进行properties文件的储存
     *
     * @param user       当前操作的用户对象
     * @param properties properties对象
     */
    public static void StoreUserMap(User user, Properties properties) throws FileNotFoundException {
        HashMap<String, User> theUser = new HashMap<>();
        theUser.get(user.getUsername());
        properties.setProperty(user.getUsername(),theUser.toString());
        try {
            properties.store(new FileOutputStream("/Users/cengyunke/Desktop/atm1/atm/src/main/resources/User.properties"),"Users2");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }

}
